import type { RNTesterModuleInfo } from '../types/RNTesterTypes';

const Components: Array<RNTesterModuleInfo> = [
  {
    key: 'ImageRotate',
    category: 'Basic',
    module: require('../examples/react-native-image-rotate/App'),
  },
  {
    key: 'ReactNativeTextinputMaxlengthFixed',
    category: 'Basic',
    module: require('../examples/react-native-textinput-maxlength-fixed/TextInputExample'),
  },
  {
    key: 'FileSelector',
    category: 'Basic',
    module: require('../examples/react-native-file-selector/FileSelectorTest'),
  },
  {
    key: 'ReactNativeHttpBridge',
    category: 'Basic',
    module: require('../examples/react-native-http-bridge/index'),
  },
  {
    key: 'ReactNativeDocViewer',
    category: 'Basic',
    module: require('../examples/react-native-doc-viewer/DocViewerTest'),
  },
  {
    key: 'AudioToolkit',
    category: 'Basic',
    module: require('../examples/react-native-audio-toolkit/AudioToolkitTest'),
  },
  {
    key: 'PlatformColors',
    category: 'UI',
    module: require('../examples/klarna-platform-colors/PlatformColorsTest'),
  },
  {
    key: 'ReactNativeWalkthroughTooltip',
    category: 'UI',
    module: require('../examples/react-native-walkthrough-tooltip/Walkthrough'),
  },
  {
    key: 'ReactNativeURLPolyfill',
    category: 'Basic',
    module: require('../examples/react-native-url-polyfill/index'),
  },
  {
    key: 'react-native-step-indicator',
    category: 'Basic',
    module: require('../examples/react-native-step-indicator/ReactNativeStepIndicator'),
  },
  {
    key: 'ReactNativeSizeMattersExample',
    category: 'UI',
    module: require('../examples/react-native-size-matters/SizeMattersTest'),
  },
  {
    key: 'ReactNativeShimmerPlaceholderExample',
    category: 'UI',
    module: require('../examples/react-native-shimmer-placeholder/App'),
  },
  {
    key: 'ReactNativeOfflineExample',
    category: 'UI',
    module: require('../examples/react-native-offline/OfflineDemoTest'),
  },
  {
    key: 'ReactNativeUdp',
    category: 'Basic',
    module: require('../examples/react-native-udp/react-native-udp').default,
  },
  {
    key: 'ReactNativeModalExample',
    category: 'UI',
    module: require('../examples/react-native-modal/ModalDemo'),
  },
  {
    key: 'react-native-base64',
    category: 'Basic',
    module: require('../examples/react-native-base64/Index'),
  },
  {
    key: 'LinearGradient',
    category: 'UI',
    module: require('../examples/react-native-linear-gradient/LinearGradientDemo-CAPI').default,
  },
  {
    key: 'ReactNativeExceptionHandler',
    category: 'Basic',
    module: require('../examples/react-native-exception-handler/App'),
  },
  {
    key: 'react-native-autoheight-webview',
    category: 'Basic',
    module: require('../examples/react-native-autoheight-webview/TestCase/index'),
  },
  {
    key: 'react-native-community-push-notification-ios',
    category: 'Basic',
    module: require('../examples/react-native-community-push-notification-ios/test/PushNotificationIos'),
  },
  {
    key: 'react-native-picker',
    category: 'UI',
    module: require('../examples/react-native-picker/Tester/PickerTester'),
  },
  {
    key: 'react-native-drag-sort',
    category: 'Basic',
    module: require('../examples/react-native-drag-sort/index'),
  },
  {
    key: 'react-native-cookies-cookies',
    category: 'Basic',
    module: require('../examples/react-native-cookies-cookies/Index'),
  },
  {
    key: 'react-native-fs',
    category: 'Basic',
    module: require('../examples/react-native-fs/Index'),
  },
  {
    key: 'KeyboardAwareScrollView',
    category: 'Basic',
    module: require('../examples/react-native-keyboard-aware-scroll-view/index'),
  },
  {
    key: 'ReactNativeImageViewing',
    category: 'UI',
    module: require('../examples/react-native-image-viewing/Tester/index'),
  },
  {
    key: 'ReactNativePDFViewExample',
    category: 'UI',
    module: require('../examples/react-native-PDFView/AppPDF'),
  },
  {
    key: 'ReactNativeImageMarker',
    category: 'UI',
    module: require('../examples/react-native-image-marker/ImageMarker'),
  },
  {
    key: 'react-native-modal-popover',
    category: 'Basic',
    module: require('../examples/react-native-modal-popover/index'),
  },
  {
    key: 'ReactNativeFastImage',
    category: 'Basic',
    module: require('../examples/react-native-fast-image/FastImageDemo'),

  },
  // {
  //   key: 'ReactNativeLocalizationExample',
  //   category: 'Basic',
  //   module: require('../examples/react-native-localization/ReactNativeLocalizationTestCase')
  // },
  {
    key: 'react-native-splash-screen',
    category: 'Map',
    module: require('../examples/react-native-splash-screen/test/SplashScreenTest').default,
  },
  {
    key: 'react-native-slider',
    category: 'Basic',
    module: require('../examples/react-native-slider/Index'),
  },
  {
    key: 'ReactNativeMail',
    category: 'Basic',
    module: require('../examples/react-native-mail/App'),
  },
  {
    key: 'ReactNativeTts',
    category: 'Basic',
    module: require('../examples/react-native-tts/TtsTest'),
  },
  {
    key: 'ReactNativeVersionNumber',
    category: 'UI',
    module: require('../examples/react-native-version-number/index'),
  },
  {
    key: 'ReactNativeSendIntent',
    category: 'UI',
    module: require('../examples/react-native-send-intent/SendIntent'),
  },
  {
    key: 'ReactNativeDefaultPreference',
    category: 'Basic',
    module: require('../examples/react-native-default-preference/App'),
  },
  // {
  //   key: 'ReactNativeBars',
  //   category: 'UI',
  //   module: require('../examples/react-native-bars/BarExample'),
  // },
  {
    key: "ReactNativeScreenshotPreventExample",
    category: "UI",
    module: require("../examples/react-native-screenshot-prevent/index"),
  },
  {
    key: 'ReactNativeConfettiCannon',
    category: 'UI',
    module: require('../examples/react-native-confetti-cannon/ConfettiCannonExample'),
  },
  {
    key: 'RNSlidingUpPanel',
    category: 'UI',
    module: require('../examples/rn-sliding-up-panel/index'),
  },
  {
    key: 'PhoneNumberInput',
    category: 'Basic',
    module: require('../examples/react-native-phone-number-input/index'),
  },
  {
    key: 'ReactNativeKeyboardAccessory',
    category: 'UI',
    module: require('../examples/react-native-keyboard-accessory/BusKeyBoardIndex'),
  },
  {
    key: 'ReactNativeGetRandomValuesExample',
    category: 'Basic',
    module: require('../examples/react-native-get-random-values/GetRandomValuesExample'),
  },
  {
    key: 'ReactNativePrintExample',
    category: 'Basic',
    module: require('../examples/react-native-print/PrintTest'),
  },
  {
    key: 'ReactNativeBrowserExample',
    category: 'Basic',
    module: require('../examples/react-native-inappbrowser/BrowserDemo1'),
  },
  {
    key: 'ReactNativeTrackPlayerExample',
    category: 'Basic',
    module: require('../examples/react-native-track-player/TrackPlayerTest')
  },
  {
    key: 'ReactNativeOrientationLockerExample',
    category: 'UI',
    module: require('../examples/react-native-orientation-locker/OrientationLockerExample')
  },
  {
    key: 'ReactNativeCommunicationsExample',
    category: 'Basic',
    module: require('../examples/react-native-communications/Communication'),
  },
  {
    key: 'ReactNativeHtmlViewExample',
    category: 'UI',
    module: require('../examples/react-native-htmlview/HtmlViewExample'),
  },
  {
    key: 'ReactNativeSwitchSelectorExample',
    category: 'UI',
    module: require('../examples/react-native-switch-selector/SwitchSelector'),
  },
  {
    key: 'RNThemeProviderExample',
    category: 'UI',
    module: require('../examples/react-theme-provider/ThemeProviderExample'),
  },
  {
    key: 'react-native-modalbox',
    category: 'Basic',
    module: require('../examples/react-native-modalBox/ModalBoxDemo'),
  },
  {
    key: 'react-native-secharts',
    category: 'Basic',
    module: require('../examples/react-native-secharts/App'),
  },
  {
    key: 'react-native-input-scroll-view',
    category: 'basic',
    module: require('../examples/react-native-input-scroll-view/index'),
  },
  {
    key: 'ReactNativeTypingAnimationExample',
    category: 'UI',
    module: require('../examples/react-native-typing-animation/TypingAnimation'),
  },
  {
    key: 'react-native-mqtt',
    category: 'Basic',
    module: require('../examples/react-native-mqtt/MqttDemoTest'),
  },
  {
    key: 'RNViewOverflowExample',
    category: 'UI',
    module: require('../examples/react-native-view-overflow/ViewOverflowDemo'),
  },
  {
    key: 'nested-scroll-view',
    category: 'UI',
    module: require('../examples/react-native-nested-scroll-view/test/ScrollViewTest').default,
  },
  {
    key: 'react-native-modals',
    category: 'Basic',
    module: require('../examples/react-native-modals/test/ReactNativeModalsExample'),
  },
  {
    key: 'react-native-pickers',
    category: 'UI',
    module: require('../examples/react-native-pickers/index'),
  },
  {
    key: 'react-native-tab-navigator',
    category: 'Basic',
    module: require('../examples/react-native-tab-navigator/TabNavigatorTest'),
  },
  {
    key: 'largelist',
    category: 'UI',
    module: require('../examples/react-native-largelist-v3/test/largelist/largelistTest').default,
  },
  {
    key: 'ReactNativeImageCapinsetsNext',
    category: 'Basic',
    module: require('../examples/react-native-image-capinsets-next/ImageCapInsetsTest'),
  },
  {
    key: 'DropDownPickerTest',
    category: 'UI',
    module: require('../examples/react-native-dropdown-picker/DropDownPickerTest'),
  },
  {
    key: 'ReactNativeScrollableTabview',
    category: 'Basic',
    module: require('../examples/react-native-scrollable-tabview/App'),
  },
  {
    key: 'react-native-amap-geolocation',
    category: 'UI',
    module: require('../examples/react-native-amap-geolocation/location').default,
  },
  {
    key: 'react-native-render-html',
    category: 'Basic',
    module: require('../examples/react-native-render-html/Index'),
  },
  {
    key: 'ReactNativeAria',
    category: 'Basic',
    module: require('../examples/react-native-aria/ReactNativeAria'),
  },
  // {
  //   key: 'ReactNativeDropdownalertExample',
  //   category: 'UI',
  //   module: require('../examples/react-native-dropdownalert/App'),
  // },
  {
    key: 'ReactNativeGridExample',
    category: 'UI',
    module: require('../examples/react-native-easy-grid/GridExample'),
  },
  {
    key: 'ReactNativeFlashMessage',
    category: 'UI',
    module: require('../examples/react-native-flash-message/FlashMessageTest'),
  },
  {
    key: 'ReactNativeLoadingSpinnerOverlay',
    category: 'UI',
    module: require('../examples/react-native-loading-spinner-overlay/LoadingSpinnerOverlayDemo'),
  }, {
    key: 'react-native-crypto-js',
    category: 'Basic',
    module: require('../examples/react-native-crypto-js/Index'),
  },
  {
    key: 'react-native-snap-carousel',
    category: 'Basic',
    module: require('../examples/react-native-snap-carousel/SnapCarousel'),
  },
  {
    key: 'react-native-transitiongroup',
    category: 'Basic',
    module: require('../examples/react-native-transitiongroup/Index'),
  },
  {
    key: 'react-native-community/checkbox',
    category: 'UI',
    module: require('../examples/react-native-community/checkbox/Index'),
  },
  {
    key: 'react-native-text-size',
    category: 'Basic',
    module: require('../examples/react-native-text-size/test/TextSizeTest'),
  },
  {
    key: 'ReactNativeFileViewer',
    category: 'Basic',
    module: require('../examples/react-native-file-viewer/FileViewerDemo'),
  },
  {
    key: 'ReactNativeContactsExample',
    category: 'Basic',
    module: require('../examples/react-native-contacts/ContactsDemo'),
  },
  {
    key: 'rn-bugly',
    category: 'Tools',
    module: require('../examples/rn-bugly/BuglyDemo').default,
  },
  {
    key: 'ReactNativeSwipeGestures',
    category: 'Basic',
    module: require('../examples/react-native-swipe-gestures/SwipeGesturesTest'),
  },
  {
    key: 'react-native-safe-module',
    category: 'UI',
    module: require('../examples/react-native-safe-module/SafeModuleDemo').default,
  },
  {
    key: 'react-native-root-siblings',
    category: 'UI',
    module: require('../examples/react-native-root-siblings/index').default,
  },
  {
    key: 'ReactNativeMarquee',
    category: 'Basic',
    module: require('../examples/react-native-marquee-ab/TestPage'),
  },
  {
    key: 'ReactNativeVideoControls',
    category: 'Basic',
    module: require('../examples/react-native-video-controls/VideoControlsTest'),
  },
  {
    key: 'ReactNativeImagePanZoom',
    category: 'UI',
    module: require('../examples/react-native-image-pan-zoom/Tester/ImageZoomExample'),
  },
  {
    key: 'ReactNativeButton',
    category: 'Basic',
    module: require('../examples/react-native-button/index').default,
  },
  {
    key: 'ReactNativeBounceable',
    category: 'Basic',
    module: require('../examples/react-native-bounceable/BounceableTest'),
  },
  {
    key: 'react-native-toast',
    category: 'UI',
    module: require('../examples/react-native-toast/ToastMasterDemo').default,
  },
  {
    key: "ReactNativePerformanceExample",
    category: "UI",
    module: require("../examples/react-native-performance/index"),
  },
  {
    key: 'ReactNativeFingerprintScannerExample',
    category: 'Basic',
    module: require('../examples/react-native-fingerprint-scanner/FingerprintScannerDemo'),
  },
  {
    key: 'ReactNativeGradientText',
    category: 'Basic',
    module: require('../examples/react-native-linear-gradient-text/index').default,
  },
  {
    key: 'ReactNativeCameraKit',
    category: 'Basic',
    module: require('../examples/react-native-camera-kit/App').default,
  },
  {
    key: "ReactNativeMultipleSelectExample",
    category: "UI",
    module: require("../examples/react-native-multiple-select/index"),
  },
  {
    key: 'ReactNativeSwitch',
    category: 'UI',
    module: require('../examples/react-native-switch/SwitchDemo'),
  },
  {
    key: 'ReactNativeMaterialMenu',
    category: 'Basic',
    module: require('../examples/react-native-material-menu/ReactNativeMaterialMenuDemo'),
  },
  {
    key: 'ReactNativeSwipeableList',
    category: 'UI',
    module: require('../examples/react-native-swipeable-list/index'),
  },  
  {
    key: 'ReactNativeChartKit',
    category: 'Basic',
    module: require('../examples/react-native-chart-kit/App'),
  },
  {
    key: 'ReactNativeCalendars',
    category: 'Basic',
    module: require('../examples/react-native-calendars/App'),
  },
  {
    key: 'react-native-waterflow-list',
    category: 'UI',
    module: require('../examples/react-native-waterflow-list/wateflowListDemo').default,
  },
  {
    key: 'react-native-screens',
    category: 'basic',
    module: require('../examples/react-native-screens/test/ScreensTest'),
  },
  {
    key: 'react-native-image-zoom-viewer',
    category: 'UI',
    module: require('../examples/react-native-image-zoom-viewer/App'),
  },
  {
    key: 'react-native-swiper',
    category: 'UI',
    module: require('../examples/react-native-swiper/Index'),
  }, 
];

const APIs: Array<RNTesterModuleInfo> = [
  {
    key: 'BorderExample',
    category: 'UI',
    module: require('../examples/Border/BorderExample'),
  }
];

const Modules: any = {};

APIs.concat(Components).forEach(Example => {
  Modules[Example.key] = Example.module;
});

const RNTesterList = {
  APIs,
  Components,
  Modules,
};

export default RNTesterList;
